package com.zenithmind.common.security;

import org.springframework.security.web.util.matcher.RequestMatcher;

import java.util.List;

/**
 * 路径匹配器接口
 * 遵循接口隔离原则：专门处理路径匹配相关操作
 */
public interface PathMatcher {
    
    /**
     * 获取当前服务的公共路径匹配器
     * 这些路径无需认证即可访问
     *
     * @return 公共路径匹配器列表
     */
    List<RequestMatcher> getPublicPaths();
    
    /**
     * 判断路径是否为公开访问
     *
     * @param path 请求路径
     * @param method HTTP方法
     * @return 是否公开访问
     */
    boolean isPublicPath(String path, String method);
    
    /**
     * 添加公共路径
     *
     * @param pathPattern 路径模式
     */
    void addPublicPath(String pathPattern);
    
    /**
     * 添加公共路径
     *
     * @param pathPattern 路径模式
     * @param httpMethod HTTP方法
     */
    void addPublicPath(String pathPattern, String httpMethod);
    
    /**
     * 移除公共路径
     *
     * @param pathPattern 路径模式
     */
    void removePublicPath(String pathPattern);
}
